package utilitarios;


public abstract class FiguraGeometrica {
	
	protected PuntoXY centroMasa;
	protected double distanciaAlBorde;
	
	public void setCentroMasa(PuntoXY punto) {
		this.centroMasa = punto;
	}
	
	public PuntoXY getCentroMasa() {
		return this.centroMasa;
	}
	
	public double getDistanciaAlBorde() {
		return this.distanciaAlBorde;
	}
	
	/**
	 * Nos dice si dos figuras estan en contacto (ya sea solo por el borde, o porque
	 * estan solapadas).
	 * @param figura
	 * @return boolean
	 */
	public boolean estaEnContactoCon(FiguraGeometrica figura) {
		double distancia = this.calcularDistancia(figura);
		if (distancia == 0) return true;
		return false;
	}
	
	/**
	 * Nos dice si dos figuras estan solapadas.
	 * @param figura
	 * @return boolean
	 */	
	public boolean estaSolapadoCon(FiguraGeometrica figura) {
		double distancia = this.calcularDistancia(figura);
		return (distancia < 0);	
	}
	
	/** Calcula la distancia entre los bordes de 2 figuras.
	 * @param unaFigura
	 * @return double
	 */
	public double calcularDistancia(FiguraGeometrica unaFigura) {
		double distanciaEntreCentros = (this.centroMasa).distancia(unaFigura.centroMasa);
		double distancia = distanciaEntreCentros - this.distanciaAlBorde - unaFigura.distanciaAlBorde;
		return distancia;

	}
}
